package com.sjzl.dao;

import java.util.List;

public interface BaseDao<T> {
	
	/**
	 * 获取实体
	 * @param clazz
	 * @param id
	 * @return
	 */
	public T get(Class<T> clazz, int id);
	
	/**
	 * 保存实体
	 * @param baseBean
	 */
	public void save(T entity);
	
	/**
	 * 删除实体
	 * @param baseBean
	 */
	public void delete(T entity);
	
	/**
	 * 更新实体
	 * @param baseBean
	 */
	public void update(T entity);
	
	/**
	 * 更新实体
	 * @param entity
	 */
	public void saveOrUpdate(T entity);
	
	/**
	 * 根据hql语句获取实体列表
	 * @param hql
	 * @return
	 */
	public List<T> list(String hql);
	
	/**
	 * 根据hql语句并传入参数获取实体列表
	 * @param hql
	 * @param params
	 * @return
	 */
	public List<T> list(String hql, Object... params);
	
	/**
	 * 根据hql语句获取分页列表
	 * @param hql
	 * @param firstResult
	 * @param maxResults
	 * @return
	 */
	public List<T> list(String hql, int firstResult, int maxResults);

	/**
	 * 根据hql语句获取分页列表
	 * @param hql
	 * @param firstResult
	 * @param maxResults
	 * @param params
	 * @return
	 */
	public List<T> list(String hql, int firstResult, int maxResults,
			Object... params);
	
	
	/**
	 * 查询总记录数
	 * @param hql
	 * @return
	 */
	public int getTotalCount(String entityName, String where);
	
	/**
	 * 查询总记录数
	 * @param hql
	 * @return
	 */
	public int getTotalCount(String hql);
}
